package com.briup.security.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 *  Security 配置类 必须继承  WebSecurityConfigurerAdapter
 *  同时必须加上 @Configuration注解
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * 重写该方法，并且通过 auth 参数设置用户名密码
     * @param auth
     * @throws Exception
     */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // 对密码进行加密
        String password = passwordEncoder().encode("123456");
        // 设置用户名与密码 以及 角色 由于这里只是学习，没有用户名和密码，因此直接写死为admin
        auth.inMemoryAuthentication().withUser("lisi").password(password).roles("adimin");
    }

    /**
     * 配置加密 解密实例
     * @return
     */
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}
